package com.example.demo.designPhilosophy.arp;


/**
* @description: TODO 尽量使用组成/聚合，而不是通过继承达到复用的目的
* @author yangzhenyu
* @date 2022/2/18 16:59
* @version 1.0
*/
//例子:假设一个A类有三个方法，一个B类想要复用A类其中两个方法，如何设计?
public class Test{


    public static void main(String[] args) {
        //第一种方式  采用继承的方式
        //但继承这个方式 ,这样会让A类和B类的耦合性加强，因为B类不一定会想用A类的其他方法
        //但如果使用继承关系，那么就要严格遵守里氏替换原则 ，如果不是必要的话，不要用这种方式
        B b = new B();
        b.method1();
        //第二种方式  采用组成/聚合复用原则的方式
        R a = new B();
        B1 b1 = new B1();
        b1.setA(a);
        b1.getA().method1();
        //第三种方式  采用依赖的方式
        B2 b2 = new B2();
        b2.method1(a);
    }
}
